﻿// **********************************************************************
//
// Author: KingSley
// Email:3268374537@qq.com
// Created:	2018/8/1   13:50
// Introduce: 包含框架UI中使用到的枚举类型、委托事件、系统常量、接口等
//
// **********************************************************************
using System.Collections.Generic;
using UnityEngine;

namespace KingSley
{
    /// <summary>
    /// UI窗体（位置）类型
    /// 表示Unity层级视图中挂载不同类型窗体的空节点。
    /// 这里Fixed 表示固定窗体，表示可以挂载"非全屏非弹出窗体"，例如RPG游戏项目中的“英雄信息”窗体等。
    /// </summary>
    public enum UIFormsType
    {
        // 普通窗体
        Normal,
        // 固定窗体                              
        Fixed,
        // 弹出窗体
        PopUp
    }

    /// <summary>
    /// UI窗体的显示类型
    /// 表示窗体不同的显示方式。
    /// Normal 类型表示窗体与其他窗体可以并列显示； 
    /// HideOther类型表示窗体显示的时候，需要隐藏所有其他窗体; 
    /// ReverseChange 窗体主要应用与"弹出窗体"，维护多个弹出窗体的层级关系。
    /// </summary>
    public enum UIFormsShowMode
    {
        // 普通
        Normal,
        // 反向切换
        ReverseChange,
        // 隐藏其他
        HideOther
    }

    /// <summary>
    /// UI窗体透明度类型
    /// 定义弹出“模态窗体”不同透明度的类型。
    /// </summary>
    public enum UIFormsLucencyType
    {
        // 完全透明，不能穿透
        Lucency,
        // 半透明，不能穿透
        Translucence,
        // 低透明度，不能穿透
        ImPenetrable,
        // 可以穿透
        Pentrate
    }

    public class UISysDefine : MonoSingleton<UISysDefine>
    {
        /* 路径常量 */
        public const string SYS_PATH_CANVAS = "Canvas";
        public const string SYS_PATH_UIFORMS_CONFIG_INFO = "UIFormsConfigInfo";
        public const string SYS_PATH_CONFIG_INFO = "SysConfigInfo";

        /* 标签常量 */
        public const string SYS_TAG_CANVAS = "_TagCanvas";

        /* 节点常量 */
        public const string SYS_NORMAL_NODE = "Normal";
        public const string SYS_FIXED_NODE = "Fixed";
        public const string SYS_POPUP_NODE = "PopUp";
        public const string SYS_SCRIPTMANAGER_NODE = "_ScriptMgr";

        /* 遮罩管理器中，透明度常量 */
        public const float SYS_UIMASK_LUCENCY_COLOR_RGB = 255 / 255F;
        public const float SYS_UIMASK_LUCENCY_COLOR_RGB_A = 0F / 255F;

        public const float SYS_UIMASK_TRANS_LUCENCY_COLOR_RGB = 220 / 255F;
        public const float SYS_UIMASK_TRANS_LUCENCY_COLOR_RGB_A = 50F / 255F;

        public const float SYS_UIMASK_IMPENETRABLE_COLOR_RGB = 50 / 255F;
        public const float SYS_UIMASK_IMPENETRABLE_COLOR_RGB_A = 200F / 255F;
    }
}